package com.sk.bilibili.decoder;

import com.google.gson.Gson;
import com.sk.bilibili.bean.Danmu;

import javax.websocket.DecodeException;
import javax.websocket.Decoder;
import javax.websocket.EndpointConfig;

/**
 * @author 邵康
 * @date 2021/12/2 15:25
 * 负责所有的json解析
 */
public abstract class BaseJsonDecoder<T> implements Decoder.Text<T> {

    @Override
    public T decode(String json) throws DecodeException {
        return gson.fromJson(json, getTargetClass());
    }

    /**
     * 也可以直接在这里获取  不过没必须反正子类是必须的
     */
    protected abstract Class<T> getTargetClass();

    @Override
    public boolean willDecode(String json) {
        return true;
    }

    private Gson gson;

    @Override
    public void init(EndpointConfig endpointConfig) {
        gson = new Gson();
    }

    @Override
    public void destroy() {
    }

}
